package com.atguigui.leetcode;

import java.util.ArrayDeque;
import java.util.Queue;

/**
 * 933.最近的请求次数
 * Project: leetcode
 * Package: com.atguigui.leetcode
 * Version: 1.0
 * <p>
 * Created by WJX on 2022/5/6 8:52
 */
public class P933NumberOfRecentCalls {
    public static void main(String[] args) {
        RecentCounter solution = new P933NumberOfRecentCalls().new RecentCounter();
        // TO TEST
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class RecentCounter {

        private Queue<Integer> queue;

        //初始化计数器，请求数为 0
        public RecentCounter() {
            queue = new ArrayDeque<>();
        }

        /*
        在时间 t 添加一个新请求，其中 t 表示以毫秒为单位的某个时间，并返回过去 3000 毫秒内发生的所有请求数（包括新请求）。确切地说，返回在 [t-3000, t] 内发生的请求数
         */
        public int ping(int t) {
            queue.offer(t);
            //检索头部但不删除
            while (queue.peek() < t - 3000) {
                //删除超出3000的部分
                queue.poll();
            }

            return queue.size();
        }
    }
}
